/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package GlobalObservingSystem.Interfaces;

import GlobalObservingSystem.Mundo.Coordenada;
import java.util.Date;

/**
 *
 * @author js.rojas131
 */
public interface IOraculo {

    /**
     * Genera una alarma para un tipo de medida en una zona
     * @param tipoMedicion el tipo de medida a la que se le crea la alarma
     * @param latitud1 primera coordenada del primer punto
     * @param longitud1 segunda coordenada del primer punto
     * @param latitud2 primera coordenada del segundo punto
     * @param longitud2 segunda coordenada del segundo punto
     */
    public void generarAlarma( int tipoMedicion, Coordenada latitud1, Coordenada longitud1, Coordenada latitud2, Coordenada longitud2);

    /**
     * Predice el clima para una zona alrededor de un punto terrestre
     * @param tipoMedida el tipo de medidas tomadas en cuenta para predecir
     * @param latitud primera coordenada del punto
     * @param longitud segunda coordenada del punto
     * @param perimetro perimetro de alcance alrededor del punto
     * @param fecha fecha en que se toman los datos para la predicción
     * @return Cadena con la información de la predicción
     */
    public String predecirClima( Coordenada latitud, Coordenada longitud, short perimetro, Date fecha);

    /**
     * Predice el clima para una zona delimitada por dos puntos terrestres
     * @param tipoMedida el tipo de medidas tomadas en cuenta para predecir
     * @param latitud1 primera coordenada del primer punto
     * @param longitud1 segunda coordenada del primer punto
     * @param latitud2 primera coordenada del segundo punto
     * @param longitud2 segunda coordenada del segundo punto
     * @param tiempo fecha en que se toman los datos para la predicción
     * @return Cadena con la información de la predicción
     */
    public String predecirClima( Coordenada latitud1, Coordenada longitud1, Coordenada latitud2, Coordenada longitud2, Date tiempo);

    /**
     * Genera un reporte de datos entre ciertas fechas y ciertos puntos terrestres
     *  @param latitud1 primera coordenada del primer punto
     * @param longitud1 segunda coordenada del primer punto
     * @param latitud2 primera coordenada del segundo punto
     * @param longitud2 segunda coordenada del segundo punto
     * @param inicio fecha de inicio del reporte
     * @param fin fecha de fin del reporte
     * @return Cadena con la información del reporte
     */
    public String generarReporte(  Coordenada latitud1, Coordenada longitud1, Coordenada latitud2, Coordenada longitud2, Date inicio, Date fin );
}
